Ingebouwde structs
Booleaanse typen
Bool |
Vertegenwoordigt het gegevenstype Boolean, met de waarde True en False. Booleaanse gegevenstypen kunnen niet naar andere gegevenstypen worden geconverteerd en andere gegevenstypen niet naar het booleaanse type. |
Numerieke typen
Decimal |
Vertegenwoordigt een decimaal getal met 28 significante cijfers of 28 decimale waarden. Het numerieke type wordt vertegenwoordigd door het 128-bits gegevenstype decimal. Dit gegevenstype is geschikt voor financiële berekeningen. Variabelen van het gegevenstype decimal hebben een bereik van 1,0 x 10 -28 tot en met 7,9 x 1028. Bewerkingen met het type decimal zijn nauwkeurig tot 28-29 significante cijfers. Een waarde van het type decimal wordt in een bewerking als nul behandeld als hij na afronding te klein is. De exception OverFlowException wordt gegenereerd als de waarde te groot is. |
Floating-point typen
De gegevenstypen float en double behoren tot de categorie floating-point.
Float |
Het bereik van het type float is van 1,5 x 10 -45 tot en met 3,4 x 1038. De waarde 2,5675 is een voorbeeld van een float-waarde. |
Double |
Het bereik van het type double is van 5, 0 x 10-324 tot en met 1,7 x 10308 . |
De volgende waarden zijn niet geldig in bewerkingen met floating-point variabelen:
- Geen getal: gegenereerd door ongeldige floating-point bewerkingen, zoals oneindig delen door oneindig of nul delen door nul.
- Positieve en negatieve oneindigheid: gegenereerd door een getal dat groter of kleiner dan nul is door nul te delen. De deling -2/0 genereert bijvoorbeeld negatieve oneindigheid en 2/0 positieve oneindigheid.
- Positieve en negatieve nul.
- Eindige verzamelingen: waarden die groter of kleiner dan nul zijn in het formaat X x Y x 2e, waarbij X = 1 of -1 en Y en e worden bepaald door de floating-point waarde.
Integertypen
C# ondersteunt negen integertypen:
int |
vertegenwoordigt 32-bits integerwaarden in het bereik van -2.147.483.648 tot en met 2.147.483.648 |
uint |
vertegenwoordigt unsigned 32-bits integerwaarden in het bereik van 0 tot en met 4.294.967.295 |
char |
vertegenwoordigt unsigned 16-bits integerwaarden in het bereik van 0 tot en met 65.535 |
byte |
vertegenwoordigt unsigned 8-bits integerwaarden in het bereik van 0 tot en met 255 |
sbyte |
vertegenwoordigt signed 8-bits integerwaarden in het bereik van -128 tot en met 127 |
long |
vertegenwoordigt signed 64-bits integerwaarden in het bereik van -9.223.372.036.854.775.808 tot en met 9.223.372.036.854.775.808 |
ulong |
vertegenwoordigt unsigned 64-bits integerwaarden in het bereik van 0 tot en met 18.446.744.073.709.551.615 |
short |
vertegenwoordigt signed 16-bits integerwaarden in het bereik van -32.768 tot en met 32.767 |
ushort |
vertegenwoordigt unsigned 16-bits integerwaarden in het bereik van 0 tot en met 65.535 |
Het .NET Framework kent eigen value types, zoals System.Int32 en System.Boolean, die overeenkomen en in feite identiek zijn aan de primitieve datatypen zoals deze in programmeertalen gebruikt worden.
Alle ingebouwde datatypen in .NET zijn structures. In .NET zijn alle value types en reference types afgeleid van System.Object. De System namespace is de root namespace voor alle typen in het .NET Framework. Deze namespace bevat classes die de basis vertegenwoordigen voor de datatypen die door alle applicaties gebruikt worden. Voorbeelden zijn: Object (het eerste type in de hiërarchie), Byte, Char, Array, Int32, String, enzovoort. Vaak komen deze typen overeen met de primitieve datatypen die in programmeertalen gebruikt worden.
Alle simpele typen zijn aliassen voor .NET Framework System typen. Bijvoorbeeld: int is een alias voor System.Int32. De C# type sleutelwoorden (keywords) en hun alias kunnen elkaar vervangen. Je kunt dus een integer variabele declaren door beide declaraties zoals we ze hieronder zien:
int x = 123;
Hier declareren we een variabele met een structure van het type System.Int32
System.Int32 x = 123;
Wanneer je dus een integer declareert via int x = 9 of via System.Int32 x=9 bereik je exact hetzelfde. Hieronder zie je een overzicht van simpele datatypen en de structure van hetzelfde datatype:
C# Type - .NET Framework type:
- bool - System.Boolean
- byte - System.Byte
- sbyte - System.SByte
- char - System.Char
- decimal - System.Decimal
- double - System.Double
- float - System.Single
- int - System.Int32
- uint - System.UInt32
- long - System.Int64
- ulong - System.UInt64
- short - System.Int16
- ushort - System.UInt16
Hieronder zie je hoe een Int32 in C# code er uit ziet:
[Serializable] public struct Int32: IComparable, IFormattable { public const int MinValue = -2147483648; public const int MaxValue = 2147483647; public static string ToString(int i) { // Insert code here. } public string ToString(string format, IFormatProvider formatProvider) { // Insert code here. } public override string ToString() { // Insert code here. } public static int Parse(string s) { // Insert code here. return 0; } public override int GetHashCode() { // Insert code here. return 0; } public override bool Equals(object obj) { // Insert code here. return false; } public int CompareTo(object obj) { // Insert code here. return 0; } }